typedef unsigned int IN_TYPE;
typedef unsigned int TEMP_TYPE;
typedef char CAN_TYPE;

#ifndef OUT_BUFFER_NUM
#define OUT_BUFFER_NUM 100000000
#endif

#ifndef OFFSET_LEN
#define OFFSET_LEN 50000000
#endif

#ifndef END_FLAG
#define END_FLAG 0xffffffff
#endif

#ifndef ADJ_LEN
#define ADJ_LEN 500000000
#endif

#ifndef CAN_LEN
#define CAN_LEN 200000000
#endif

#ifndef CAN2_LEN
#define CAN2_LEN 108614304
#endif

#ifndef INDEX_LEN
#define INDEX_LEN 100000
#endif

#ifndef CINDEX_LEN
#define CINDEX_LEN 900000
#endif


#ifndef CAN_LEN_DOU
#define CAN_LEN_DOU 50000000
#endif

#ifndef OUT_LEN
#define OUT_LEN 50000000
#endif

extern "C"{
void kerneltwo(
		IN_TYPE offset1[OFFSET_LEN],IN_TYPE adj1[ADJ_LEN],
		IN_TYPE offset2[OFFSET_LEN],IN_TYPE adj2[ADJ_LEN],
		IN_TYPE offset3[OFFSET_LEN],IN_TYPE adj3[ADJ_LEN],
		IN_TYPE offset4[OFFSET_LEN],IN_TYPE adj4[ADJ_LEN],
		IN_TYPE cand1[CAN_LEN],CAN_TYPE cand2[CAN2_LEN],CAN_TYPE findex[INDEX_LEN],CAN_TYPE cindex[INDEX_LEN],
		IN_TYPE size1,IN_TYPE size2,IN_TYPE index_size,IN_TYPE cindex_size,
		IN_TYPE pid1,IN_TYPE pid2,
		IN_TYPE out_buf[OUT_LEN]
		);
void kernelone(
		IN_TYPE offset1[OFFSET_LEN],IN_TYPE adj1[ADJ_LEN],
		IN_TYPE offset2[OFFSET_LEN],IN_TYPE adj2[ADJ_LEN],
		IN_TYPE cand1[CAN_LEN],CAN_TYPE cand2[CAN2_LEN],CAN_TYPE findex[INDEX_LEN],CAN_TYPE cindex[CINDEX_LEN],
		IN_TYPE size1,IN_TYPE size2,IN_TYPE index_size,IN_TYPE cindex_size,
		IN_TYPE pid1,CAN_TYPE type1,
		IN_TYPE out_buf[OUT_LEN]
		);
}
